package com.cheboohui.iqs.taiping.direct.order;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.cheboohui.iqs.config.Config;
import com.cheboohui.iqs.menu.ErrorNews;
import com.cheboohui.iqs.taiping.direct.ResTaiPing;
import com.cheboohui.iqs.taiping.direct.e.E03Request;
import com.cheboohui.iqs.taiping.direct.e.E04Request;
import com.cheboohui.iqs.taiping.direct.e.E05Request;

/**
 * 获取报价所需订单号---方法
 * 
 * @author xielonghai
 *
 */
public class GetOrderNo {
	/**
	 * logger:日志工具.
	 */
	private static Log log = LogFactory.getLog(GetOrderNo.class);

	/**
	 * 获取订单号
	 * 
	 * @param owner
	 *            车主信息
	 * @return 订单号
	 */
	public static ResTaiPing orderNo(JSONObject owner) {
		JSONObject obj = new JSONObject();
		if (owner.getBoolean("direct")) {
			log.info(Config.value + "--获取订单号--可以直接报价的车，通过E03获取订单号...");
			/* 可以直接报价的车，通过E03获取订单号 */
			ResTaiPing e03 = E03Request.requestE03(owner.getString("session"), owner.getString("cityCode"),
					owner.getString("licenseNo"), owner.getString("identifyNumber"));
			if (!e03.isState())
				return e03;
			else {
				obj.put("orderNo", e03.getResult().getJSONArray("order").getJSONObject(0).getString("orderNo"));
				log.info(Config.value + "--获取订单号--可以直接报价的车，通过E03获取订单号:" + obj.getString("orderNo"));
				return new ResTaiPing(obj);
			}
		} else {
			/* 不能直接报价的车，通过E05-->E04获取订单号 */
			log.info(Config.value + "--获取订单号--不能直接报价的车，通过E05-->E04获取订单号...");
			// E05
			ResTaiPing e05 = E05Request.requestE05(owner.getString("session"), owner.getString("brandName"));
			log.info(Config.value + "--获取订单号--不能直接报价的车，通过E05-->E04获取订单号...E05返回session:"
					+ e05.getHead().getString("session"));

			boolean goE04 = false;
			if (!e05.isState())
				return e05;
			else {
				log.info(Config.value + "--获取订单号--不能直接报价的车，通过E05-->E04获取订单号<通过E05获取车型列表成功.....>");
				JSONArray vehicle = e05.getResult().getJSONArray("vehicle");
				for (int k = 0; k < vehicle.size(); k++) {
					if (owner.getDoubleValue("purchase") == vehicle.getJSONObject(k).getDoubleValue("purchasePrice")) {
						log.info(Config.value + "--获取订单号--不能直接报价的车，通过E05-->E04获取订单号<通过E05获取车型列表后确定车型成功.....>");
						
						owner.put("modelCode", vehicle.getJSONObject(k).getString("modelCode"));
						goE04 = true;
						break;
					}
				}
			}

			if (goE04) {
				ResTaiPing e04 = E04Request.requestE04(e05.getHead().getString("session"), owner);
				if (!e04.isState())
					return e04;
				else {
					obj.put("orderNo", e04.getResult().getJSONArray("order").getJSONObject(0).getString("orderNo"));
					obj.put("session", e04.getHead().getString("session"));
					return new ResTaiPing(obj);
				}
			} else {
				return new ResTaiPing(ErrorNews.C05, "太平直连车型库无所选车型", e05.getResult());
			}
		}
	}
}
